/*
 * EdgeMap.h
 *
 *  Created on: Nov 23, 2009
 *      Author: abhishek
 */

#ifndef EDGEMAP_H_
#define EDGEMAP_H_

#include "Headers.h"

class EdgeMap {
public:
	EdgeMap();
	virtual ~EdgeMap();

	int signBetweenEdges(int node1, int node2);
	void signBetweenEdgesIs(int node1, int node2, int sign);

	int numBadMinusGoodCycles(int nodeId1, int nodeId2);
	void addGoodCycle(int node1, int node2);
	void addBadCycle(int node1, int node2);

	int numBadMinusGoodCycles(string key);
	void addGoodCycle(string key);
	void addBadCycle(string key);

	void reset();

private:
//	string makeKey(int nodeId1, int nodeId2);

	map<string, int> edgeBadCyclesMap_ ;
	map<string, int> edgeSignMap_ ;
};

#endif /* EDGEMAP_H_ */
